//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  Header:  s3c6410_gpio.h
//
//  Defines the Input/Output Ports (GPIO) control registers and associated
//  types and constants.
//
#ifndef __S3C6410_GPIO_H
#define __S3C6410_GPIO_H

#if __cplusplus
extern "C" {
#endif

typedef struct
{
    UINT32 GPACON;        // 000
    UINT32 GPADAT;        // 004
    UINT32 GPAPUD;        // 008
    UINT32 GPACONSLP;    // 00c

    UINT32 GPAPUDSLP;    // 010
    UINT32 PAD1[3];        // 014~01f

    UINT32 GPBCON;        // 020
    UINT32 GPBDAT;        // 024
    UINT32 GPBPUD;        // 028
    UINT32 GPBCONSLP;    // 02c

    UINT32 GPBPUDSLP;    // 030
    UINT32 PAD2[3];        // 034~03f

    UINT32 GPCCON;        // 040
    UINT32 GPCDAT;        // 044
    UINT32 GPCPUD;        // 048
    UINT32 GPCCONSLP;    // 04c

    UINT32 GPCPUDSLP;    // 050
    UINT32 PAD3[3];        // 054~05f

    UINT32 GPDCON;        // 060
    UINT32 GPDDAT;        // 064
    UINT32 GPDPUD;        // 068
    UINT32 GPDCONSLP;    // 06c

    UINT32 GPDPUDSLP;    // 070
    UINT32 PAD4[3];        // 074~07f

    UINT32 GPECON;        // 080
    UINT32 GPEDAT;        // 084
    UINT32 GPEPUD;        // 088
    UINT32 GPECONSLP;    // 08c

    UINT32 GPEPUDSLP;    // 090
    UINT32 PAD5[3];        // 094~09f

    UINT32 GPFCON;        // 0a0
    UINT32 GPFDAT;        // 0a4
    UINT32 GPFPUD;        // 0a8
    UINT32 GPFCONSLP;    // 0ac

    UINT32 GPFPUDSLP;    // 0b0
    UINT32 PAD6[3];        // 0b4~0bf

    UINT32 GPGCON;        // 0c0
    UINT32 GPGDAT;        // 0c4
    UINT32 GPGPUD;        // 0c8
    UINT32 GPGCONSLP;    // 0cc

    UINT32 GPGPUDSLP;    // 0d0
    UINT32 PAD7[3];        // 0d4~0df

    UINT32 GPHCON0;        // 0e0
    UINT32 GPHCON1;        // 0e4
    UINT32 GPHDAT;        // 0e8
    UINT32 GPHPUD;        // 0ec

    UINT32 GPHCONSLP;    // 0f0
    UINT32 GPHPUDSLP;    // 0f4
    UINT32 PAD8[2];        // 0f8~0ff

    UINT32 GPICON;        // 100
    UINT32 GPIDAT;        // 104
    UINT32 GPIPUD;        // 108
    UINT32 GPICONSLP;    // 10c

    UINT32 GPIPUDSLP;    // 110
    UINT32 PAD9[3];        // 114~11f

    UINT32 GPJCON;        // 120
    UINT32 GPJDAT;        // 124
    UINT32 GPJPUD;        // 128
    UINT32 GPJCONSLP;    // 12c

    UINT32 GPJPUDSLP;    // 130
    UINT32 PAD10[3];        // 134~13f

    // GPK, GPL, GPM, GPN are Below

    UINT32 GPOCON;        // 140
    UINT32 GPODAT;        // 144
    UINT32 GPOPUD;        // 148
    UINT32 GPOCONSLP;    // 14c

    UINT32 GPOPUDSLP;    // 150
    UINT32 PAD11[3];        // 154~15f

    UINT32 GPPCON;        // 160
    UINT32 GPPDAT;        // 164
    UINT32 GPPPUD;        // 168
    UINT32 GPPCONSLP;    // 16c

    UINT32 GPPPUDSLP;    // 170
    UINT32 PAD12[3];        // 174~17f

    UINT32 GPQCON;        // 180
    UINT32 GPQDAT;        // 184
    UINT32 GPQPUD;        // 188
    UINT32 GPQCONSLP;    // 18c

    UINT32 GPQPUDSLP;    // 190
    UINT32 PAD13[3];        // 194~19f

    UINT32 SPCON;        // 1a0
    UINT32 PAD14[3];        // 1a4~1af

    UINT32 MEM0CONSTOP;    // 1b0
    UINT32 MEM1CONSTOP;    // 1b4
    UINT32 PAD15[2];            // 1b8~1bf

    UINT32 MEM0CONSLP0;    // 1c0
    UINT32 MEM0CONSLP1;    // 1c4
    UINT32 MEM1CONSLP;        // 1c8
    UINT32 PAD16;            // 1cc

    UINT32 MEM0DRVCON;        // 1d0
    UINT32 MEM1DRVCON;        // 1d4
    UINT32 PAD17[2];            // 1d8~1df

    UINT32 PAD18[8];            // 1e0~1ff

    UINT32 EINT12CON;        // 200
    UINT32 EINT34CON;        // 204
    UINT32 EINT56CON;        // 208
    UINT32 EINT78CON;        // 20c

    UINT32 EINT9CON;        // 210
    UINT32 PAD19[3];            // 214~21f

    UINT32 EINT12FLTCON;    // 220
    UINT32 EINT34FLTCON;    // 224
    UINT32 EINT56FLTCON;    // 228
    UINT32 EINT78FLTCON;    // 22c

    UINT32 EINT9FLTCON;        // 230
    UINT32 PAD20[3];            // 234~23f

    UINT32 EINT12MASK;        // 240
    UINT32 EINT34MASK;        // 244
    UINT32 EINT56MASK;        // 248
    UINT32 EINT78MASK;        // 24c

    UINT32 EINT9MASK;        // 250
    UINT32 PAD21[3];            // 254~25f

    UINT32 EINT12PEND;        // 260
    UINT32 EINT34PEND;        // 264
    UINT32 EINT56PEND;        // 268
    UINT32 EINT78PEND;        // 26c

    UINT32 EINT9PEND;        // 270
    UINT32 PAD22[3];            // 274~27f

    UINT32 PRIORITY;        // 280
    UINT32 SERVICE;            // 284
    UINT32 SERVICEPEND;        // 288
    UINT32 PAD23;            // 28f

    UINT32 PAD24[348];        // 290~7ff

    UINT32 GPKCON0;            // 800
    UINT32 GPKCON1;            // 804
    UINT32 GPKDAT;            // 808
    UINT32 GPKPUD;            // 80c

    UINT32 GPLCON0;            // 810
    UINT32 GPLCON1;            // 814
    UINT32 GPLDAT;            // 818
    UINT32 GPLPUD;            // 81c

    UINT32 GPMCON;            // 820
    UINT32 GPMDAT;            // 824
    UINT32 GPMPUD;            // 828
    UINT32 PAD25;            // 82f

    UINT32 GPNCON;            // 830
    UINT32 GPNDAT;            // 834
    UINT32 GPNPUD;            // 838
    UINT32 PAD26;            // 83f

    UINT32 PAD27[16];        // 840~87f

    UINT32 SPCONSLP;        // 880
    UINT32 PAD28[3];            // 884~88f

    UINT32 PAD29[28];        // 890~8ff

    UINT32 EINT0CON0;        // 900
    UINT32 EINT0CON1;        // 904
    UINT32 PAD30[2];            // 908~90f

    UINT32 EINT0FLTCON0;    // 910
    UINT32 EINT0FLTCON1;    // 914
    UINT32 EINT0FLTCON2;    // 918
    UINT32 EINT0FLTCON3;    // 91c

    UINT32 EINT0MASK;        // 920
    UINT32 EINT0PEND;        // 924
    UINT32 PAD31[2];            // 928~92f

    UINT32 SLPEN;            // 930
    UINT32 PAD32[3];            // 934~93f
} S3C6410_GPIO_REG,*PS3C6410_GPIO_REG;

//------------------------------------------------------------------------------

#if __cplusplus
}
#endif

#endif // __S3C6410_GPIO_H
